總結一下前面的參賽內容,並做一些補充說明。
技術分析主要有兩個體系,分別為技術指標與技術型態。技術指標大部分都是客觀的法則,但少部分是主觀性質(例如:背離);因此在量化交易或程式交易多用技術指標。技術型態都是主觀性質,型態的建構積木有轉折點、價量關係、趨勢線...等;主觀性質並無法直接有程式處理,需透過「主觀性質客觀化」方式來將圖形或線段轉換為數據。
在本次參賽中,提到兩種方式進行客觀化:
方式一:將在看盤軟體繪製的圖形與線段以人工方式轉換成數據
方式二:利用演算法以自動化方式來找尋或識別型態
方式二可以說是程式自動化地進行趨勢線繪製或識別模式,可以用演算法(如Day14內容)或用人工智慧技術(如Day29內容)為之。而方式一是轉換股票老師手繪或自動化程序尚未完備時的手段,也是進行機器學習∕深度學習在資料標註上的方法。
以下是一個案例,用以說明將主觀性質客觀化如何用於個股的追蹤與監控。程序如下:
一開始我是想用「量化技術分析」做為參賽題目。但在整理內容後發現我目前系統中的自動化程度還不是那麼的充分(這也是未來要努力的地方),因此改用現在之題目名稱「用Python程式進行股票技術分析」。之後看到「量化交易之路:用Python做股票量化分析」一書後,發現是有量化技術分析的概念。此外該書有個展示網站用以展示「量化分析」,以下的案例就是關於頭肩頂型態的分析,如下圖所示:
而他人的研究與實作可以做為未來完善系統之借鑒與參考。
在Day17提到趨勢、位階、型態。其實在位階量化部份國內有人提出〝量化位階評價法〞,可以參考文章「【心法】量化位階評價法,判斷股價甜蜜點」(請注意:在我撰寫程式的時間點(2023年3月)與現時點(2023年9月)之文章描述內容已有所不同,以下會以前者進行說明)文章內容。
這個概念要實作成Python程式碼不是很困難,首先要暸解「標準差」與「常態分佈」:
然後將標準差範圍與位階評價對應起來:
實作之Python程式碼如下所示:
def stock_rank_evaluate(prices_mean,prices_std,price):
rank = ''
price_std_range = (price - prices_mean) / prices_std
if price_std_range < -2.0 :
rank = '極低'
elif price_std_range > -2.0 and price_std_range < -1.0 :
rank = '低'
elif price_std_range > -1.0 and price_std_range <= 0 :
rank = '稍低'
elif price_std_range > 0 and price_std_range < 1.0 :
rank = '稍高'
elif price_std_range > 1.0 and price_std_range < 2.0 :
rank = '高'
elif price_std_range > 2.0 :
rank = '極高'
print("價格 = {:.2f}元(標準差範圍 = {:.2f}) , 位階評價:{}".format(price,price_std_range,rank))
return rank
至此完成鐵人賽之30天賽程,感謝各位先進與同好這段時間的支持及指教!